]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
appDisplay: Include system actions in search results
authorRares Visalom <rares.visalom@gmail.com>
Mon, 21 Aug 2017 13:20:25 +0000 (16:20 +0300)
committerFlorian Müllner <fmuellner@gnome.org>
Tue, 22 Aug 2017 11:02:58 +0000 (13:02 +0200)
The way system actions are displayed in the search
results is by appending them at the end of the list
returned by the ApplicationProvider.

https://bugzilla.gnome.org/show_bug.cgi?id=691900

data/theme/gnome-shell-high-contrast.css
data/theme/gnome-shell-sass
data/theme/gnome-shell.css
js/ui/appDisplay.js

index 6b4ea1218cfa7f2d80a3efec340be470c3bdcccd..766202927cf3039b7cb911cd6115b299495d58d0 100644 (file)
@@ -1210,6 +1210,12 @@ StScrollBar {
   .icon-grid .overview-icon {
     icon-size: 96px; }
 
+.system-action-icon {
+  background-color: black;
+  color: white;
+  border-radius: 99px;
+  icon-size: 48px; }
+
 .app-view-controls {
   padding-bottom: 32px; }
 
index 53cf147f95305d398b71443de2b5cb893fbcd166..81c5a273cf2fa5ef8c05940665a077635ae019a4 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 53cf147f95305d398b71443de2b5cb893fbcd166
+Subproject commit 81c5a273cf2fa5ef8c05940665a077635ae019a4
index 34d3c886b7ca3f86458798b0f878e44e3030c01e..f94c67cbc8d33b1a8fb63a7d01732e2bb44b6975 100644 (file)
@@ -1210,6 +1210,12 @@ StScrollBar {
   .icon-grid .overview-icon {
     icon-size: 96px; }
 
+.system-action-icon {
+  background-color: black;
+  color: white;
+  border-radius: 99px;
+  icon-size: 48px; }
+
 .app-view-controls {
   padding-bottom: 32px; }
 
index 428b3c062dea5b38cc6139a0a5611109673b21f9..9b92311ac992ec2874cb682b8c67e05a9ef364b1 100644 (file)
@@ -24,8 +24,11 @@ const OverviewControls = imports.ui.overviewControls;
 const PopupMenu = imports.ui.popupMenu;
 const Tweener = imports.ui.tweener;
 const Workspace = imports.ui.workspace;
+const Search = imports.ui.search;
+const System = imports.ui.status.system;
 const Params = imports.misc.params;
 const Util = imports.misc.util;
+const SystemActions = imports.misc.systemActions;
 
 var MAX_APPLICATION_WORK_MILLIS = 75;
 var MENU_POPUP_TIMEOUT = 600;
@@ -1085,19 +1088,35 @@ var AppSearchProvider = new Lang.Class({
         this.id = 'applications';
         this.isRemoteProvider = false;
         this.canLaunchSearch = false;
+
+        this._systemActions = new SystemActions.getDefault();
     },
 
     getResultMetas: function(apps, callback) {
         let metas = [];
-        for (let i = 0; i < apps.length; i++) {
-            let app = this._appSys.lookup_app(apps[i]);
-            metas.push({ 'id': app.get_id(),
-                         'name': app.get_name(),
-                         'createIcon': function(size) {
-                             return app.create_icon_texture(size);
-                         }
-                       });
+        for (let id of apps) {
+            if (id.endsWith('.desktop')) {
+                let app = this._appSys.lookup_app(id);
+
+                metas.push({ 'id': app.get_id(),
+                             'name': app.get_name(),
+                             'createIcon': function(size) {
+                                 return app.create_icon_texture(size);
+                           }
+                });
+            } else {
+                let name = this._systemActions.getName(id);
+                let iconName = this._systemActions.getIconName(id);
+
+                let createIcon = size => new St.Icon({ icon_name: iconName,
+                                                       width: size,
+                                                       height: size,
+                                                       style_class: 'system-action-icon' });
+
+                metas.push({ id, name, createIcon });
+            }
         }
+
         callback(metas);
     },
 
@@ -1119,6 +1138,9 @@ var AppSearchProvider = new Lang.Class({
                 return usage.compare('', a, b);
             }));
         });
+
+        results = results.concat(this._systemActions.getMatchingActions(terms));
+
         callback(results);
     },
 
@@ -1127,8 +1149,10 @@ var AppSearchProvider = new Lang.Class({
     },
 
     createResultObject: function (resultMeta) {
-        let app = this._appSys.lookup_app(resultMeta['id']);
-        return new AppIcon(app);
+        if (resultMeta.id.endsWith('.desktop'))
+            return new AppIcon(this._appSys.lookup_app(resultMeta['id']));
+        else
+            return new SystemActionIcon(this, resultMeta);
     }
 });
 
@@ -1983,3 +2007,13 @@ var AppIconMenu = new Lang.Class({
     }
 });
 Signals.addSignalMethods(AppIconMenu.prototype);
+
+var SystemActionIcon = new Lang.Class({
+    Name: 'SystemActionIcon',
+    Extends: Search.GridSearchResult,
+
+    activate: function() {
+        SystemActions.getDefault().activateAction(this.metaInfo['id']);
+        Main.overview.hide();
+    }
+});